package com.saihai.wordBg;

import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;

import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;

public class testWord {


    static void ss() {
        // 创建一个新的Word文档
        XWPFDocument document = new XWPFDocument();

        // 创建标题段落
        XWPFParagraph titleParagraph = document.createParagraph();
        titleParagraph.setAlignment(ParagraphAlignment.CENTER);
        XWPFRun titleRun = titleParagraph.createRun();
        titleRun.setText("重庆市学生健康体检报告单");
        titleRun.setBold(true);
        titleRun.setFontSize(16);

        XWPFParagraph infoParagraph = document.createParagraph();
        infoParagraph.setAlignment(ParagraphAlignment.LEFT);
        XWPFRun infoRun = infoParagraph.createRun();
        infoRun.setText("姓名：张三  性别：20  学校：测试学校  体检日期：2022-02-22 打印日期：" + "2022-02-22");
        infoRun.setFontSize(9);

        // 创建表格
        XWPFTable table = document.createTable(9,9);
        table.setWidth(1000);
        table.setTableAlignment(TableRowAlign.CENTER);
        CTTblPr tblPr = table.getCTTbl().getTblPr();
        tblPr.getTblW().setType(STTblWidth.DXA);// 表格固定宽度
        tblPr.getTblW().setW(BigInteger.valueOf(10000L));//表格总宽度
//        CTTblLayoutType layoutType = table.getCTTbl().getTblPr().addNewTblLayout();
//        layoutType.setType(STTblLayoutType.FIXED);//FIXED：列固定宽度 AUTOFIT：列自动宽度

        // 设置表格第一行（表头）

        //第一行数据
        table.getRow(0).getCell(0).setText("项目");
        table.getRow(0).getCell(1).setText("身高");
        table.getRow(0).getCell(2).setText("体重");
        table.getRow(0).getCell(3).setText("肺活量");
        table.getRow(0).getCell(4).setText("收缩压");
        table.getRow(0).getCell(5).setText("舒缩压");
        table.getRow(0).getCell(6).setText("左眼");
        table.getRow(0).getCell(7).setText("右眼");
        table.getRow(0).getCell(8).setText("龋齿");

        //第二行数据
        table.getRow(1).getCell(0).setText("结果值");
        table.getRow(1).getCell(1).setText("170cm");
        table.getRow(1).getCell(2).setText("170cm");
        table.getRow(1).getCell(3).setText("170cm");
        table.getRow(1).getCell(4).setText("170cm");
        table.getRow(1).getCell(5).setText("170cm");
        table.getRow(1).getCell(6).setText("170cm");
        table.getRow(1).getCell(7).setText("170cm");
        table.getRow(1).getCell(8).setText("170cm");

        //第三行数据
        table.getRow(2).getCell(0).setText("评价");
        table.getRow(2).getCell(1).setText("-");
        table.getRow(2).getCell(2).setText("-");
        table.getRow(2).getCell(3).setText("-");
        table.getRow(2).getCell(4).setText("-");
        table.getRow(2).getCell(5).setText("170cm");
        table.getRow(2).getCell(6).setText("无");
        table.getRow(2).getCell(7).setText("无");
        table.getRow(2).getCell(8).setText("170cm");

        //横向合并，第一行的0和1
        table.getRow(2).getCell(6).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
        table.getRow(2).getCell(7).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);

        //第四行数据
        table.getRow(3).getCell(0).setText("项目");
        table.getRow(3).getCell(1).setText("左眼沙眼");
        table.getRow(3).getCell(2).setText("右眼沙眼");
        table.getRow(3).getCell(3).setText("乳龋患");
        table.getRow(3).getCell(4).setText("乳龋失");
        table.getRow(3).getCell(5).setText("乳龋补");
        table.getRow(3).getCell(6).setText("恒龋患");
        table.getRow(3).getCell(7).setText("恒龋失");
        table.getRow(3).getCell(8).setText("恒龋补");

        //第五行数据
        table.getRow(4).getCell(0).setText("结果");
        table.getRow(4).getCell(1).setText("左眼沙眼");
        table.getRow(4).getCell(2).setText("右眼沙眼");
        table.getRow(4).getCell(3).setText("乳龋患");
        table.getRow(4).getCell(4).setText("乳龋失");
        table.getRow(4).getCell(5).setText("乳龋补");
        table.getRow(4).getCell(6).setText("恒龋患");
        table.getRow(4).getCell(7).setText("恒龋失");
        table.getRow(4).getCell(8).setText("恒龋补");

        //第六行数据
        table.getRow(5).getCell(0).setText("项目");
        table.getRow(5).getCell(1).setText("头部");
        table.getRow(5).getCell(2).setText("颈部");
        table.getRow(5).getCell(3).setText("胸部");
        table.getRow(5).getCell(4).setText("脊柱");
        table.getRow(5).getCell(5).setText("四肢");
        table.getRow(5).getCell(6).setText("皮肤");
        table.getRow(5).getCell(7).setText("淋巴结");
        table.getRow(5).getCell(8).setText("牙周");

        //第七行数据
        table.getRow(6).getCell(0).setText("结果");
        table.getRow(6).getCell(1).setText("-");
        table.getRow(6).getCell(2).setText("0-");
        table.getRow(6).getCell(3).setText("-");
        table.getRow(6).getCell(4).setText("-");
        table.getRow(6).getCell(5).setText("-");
        table.getRow(6).getCell(6).setText("-");
        table.getRow(6).getCell(7).setText("-");
        table.getRow(6).getCell(8).setText("-");


        //第八行数据
        table.getRow(7).getCell(0).setText("项目");
        table.getRow(7).getCell(1).setText("心");
        table.getRow(7).getCell(2).setText("肺");
        table.getRow(7).getCell(3).setText("肝");
        table.getRow(7).getCell(4).setText("脾");
        table.getRow(7).getCell(5).setText("结膜炎");
        table.getRow(7).getCell(6).setText("内科其他");
        table.getRow(7).getCell(7).setText("外科其他");
        table.getRow(7).getCell(8).setText("既往病史");

        //第九行数据
        table.getRow(8).getCell(0).setText("结果");
        table.getRow(8).getCell(1).setText("-");
        table.getRow(8).getCell(2).setText("0-");
        table.getRow(8).getCell(3).setText("-");
        table.getRow(8).getCell(4).setText("-");
        table.getRow(8).getCell(5).setText("-");
        table.getRow(8).getCell(6).setText("-");
        table.getRow(8).getCell(7).setText("-");
        table.getRow(8).getCell(8).setText("-");


        // 创建标题段落
        XWPFParagraph titleParagraph1 = document.createParagraph();
        titleParagraph1.setAlignment(ParagraphAlignment.CENTER);
        XWPFRun titleRun1 = titleParagraph1.createRun();
        titleRun1.setText("重庆市学生健康体检报告单");
        titleRun1.setBold(true);
        titleRun1.setFontSize(16);

        XWPFParagraph infoParagraph1 = document.createParagraph();
        infoParagraph1.setAlignment(ParagraphAlignment.LEFT);
        XWPFRun infoRun1 = infoParagraph1.createRun();
        infoRun1.setText("姓名：张三  性别：20  学校：测试学校  体检日期：2022-02-22 打印日期：" + "2022-02-22");
        infoRun1.setFontSize(9);

        // 创建表格
        XWPFTable table1 = document.createTable(9,9);
        table1.setWidth(1000);
        table1.setTableAlignment(TableRowAlign.CENTER);
        CTTblPr tblPr1 = table1.getCTTbl().getTblPr();
        tblPr1.getTblW().setType(STTblWidth.DXA);// 表格固定宽度
        tblPr1.getTblW().setW(BigInteger.valueOf(10000L));//表格总宽度
//        CTTblLayoutType layoutType = table.getCTTbl().getTblPr().addNewTblLayout();
//        layoutType.setType(STTblLayoutType.FIXED);//FIXED：列固定宽度 AUTOFIT：列自动宽度

        // 设置表格第一行（表头）

        //第一行数据
        table1.getRow(0).getCell(0).setText("项目");
        table1.getRow(0).getCell(1).setText("身高");
        table1.getRow(0).getCell(2).setText("体重");
        table1.getRow(0).getCell(3).setText("肺活量");
        table1.getRow(0).getCell(4).setText("收缩压");
        table1.getRow(0).getCell(5).setText("舒缩压");
        table1.getRow(0).getCell(6).setText("左眼");
        table1.getRow(0).getCell(7).setText("右眼");
        table1.getRow(0).getCell(8).setText("龋齿");

        //第二行数据
        table1.getRow(1).getCell(0).setText("结果值");
        table1.getRow(1).getCell(1).setText("170cm");
        table1.getRow(1).getCell(2).setText("170cm");
        table1.getRow(1).getCell(3).setText("170cm");
        table1.getRow(1).getCell(4).setText("170cm");
        table1.getRow(1).getCell(5).setText("170cm");
        table1.getRow(1).getCell(6).setText("170cm");
        table1.getRow(1).getCell(7).setText("170cm");
        table1.getRow(1).getCell(8).setText("170cm");

        //第三行数据
        table1.getRow(2).getCell(0).setText("评价");
        table1.getRow(2).getCell(1).setText("-");
        table1.getRow(2).getCell(2).setText("-");
        table1.getRow(2).getCell(3).setText("-");
        table1.getRow(2).getCell(4).setText("-");
        table1.getRow(2).getCell(5).setText("170cm");
        table1.getRow(2).getCell(6).setText("无");
        table1.getRow(2).getCell(7).setText("无");
        table1.getRow(2).getCell(8).setText("170cm");

        //横向合并，第一行的0和1
        table1.getRow(2).getCell(6).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
        table1.getRow(2).getCell(7).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);

        //第四行数据
        table1.getRow(3).getCell(0).setText("项目");
        table1.getRow(3).getCell(1).setText("左眼沙眼");
        table1.getRow(3).getCell(2).setText("右眼沙眼");
        table1.getRow(3).getCell(3).setText("乳龋患");
        table1.getRow(3).getCell(4).setText("乳龋失");
        table1.getRow(3).getCell(5).setText("乳龋补");
        table1.getRow(3).getCell(6).setText("恒龋患");
        table1.getRow(3).getCell(7).setText("恒龋失");
        table1.getRow(3).getCell(8).setText("恒龋补");

        //第五行数据
        table1.getRow(4).getCell(0).setText("结果");
        table1.getRow(4).getCell(1).setText("左眼沙眼");
        table1.getRow(4).getCell(2).setText("右眼沙眼");
        table1.getRow(4).getCell(3).setText("乳龋患");
        table1.getRow(4).getCell(4).setText("乳龋失");
        table1.getRow(4).getCell(5).setText("乳龋补");
        table1.getRow(4).getCell(6).setText("恒龋患");
        table1.getRow(4).getCell(7).setText("恒龋失");
        table1.getRow(4).getCell(8).setText("恒龋补");

        //第六行数据
        table1.getRow(5).getCell(0).setText("项目");
        table1.getRow(5).getCell(1).setText("头部");
        table1.getRow(5).getCell(2).setText("颈部");
        table1.getRow(5).getCell(3).setText("胸部");
        table1.getRow(5).getCell(4).setText("脊柱");
        table1.getRow(5).getCell(5).setText("四肢");
        table1.getRow(5).getCell(6).setText("皮肤");
        table1.getRow(5).getCell(7).setText("淋巴结");
        table1.getRow(5).getCell(8).setText("牙周");

        //第七行数据
        table1.getRow(6).getCell(0).setText("结果");
        table1.getRow(6).getCell(1).setText("-");
        table1.getRow(6).getCell(2).setText("0-");
        table1.getRow(6).getCell(3).setText("-");
        table1.getRow(6).getCell(4).setText("-");
        table1.getRow(6).getCell(5).setText("-");
        table1.getRow(6).getCell(6).setText("-");
        table1.getRow(6).getCell(7).setText("-");
        table1.getRow(6).getCell(8).setText("-");


        //第八行数据
        table1.getRow(7).getCell(0).setText("项目");
        table1.getRow(7).getCell(1).setText("心");
        table1.getRow(7).getCell(2).setText("肺");
        table1.getRow(7).getCell(3).setText("肝");
        table1.getRow(7).getCell(4).setText("脾");
        table1.getRow(7).getCell(5).setText("结膜炎");
        table1.getRow(7).getCell(6).setText("内科其他");
        table1.getRow(7).getCell(7).setText("外科其他");
        table1.getRow(7).getCell(8).setText("既往病史");

        //第九行数据
        table1.getRow(8).getCell(0).setText("结果");
        table1.getRow(8).getCell(1).setText("-");
        table1.getRow(8).getCell(2).setText("0-");
        table1.getRow(8).getCell(3).setText("-");
        table1.getRow(8).getCell(4).setText("-");
        table1.getRow(8).getCell(5).setText("-");
        table1.getRow(8).getCell(6).setText("-");
        table1.getRow(8).getCell(7).setText("-");
        table1.getRow(8).getCell(8).setText("-");


        try (FileOutputStream out = new FileOutputStream("D://student_health_report.docx")) {
            document.write(out);
            System.out.println("Word文档已成功生成。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        ss();
    }

    static void testXWPFTable1(){
        System.out.println("开始执行");
        try {
            //定义word
            XWPFDocument doc = new XWPFDocument();
            //在word中创建一个表格(2行，3列)
            XWPFTable table = doc.createTable(3,3);
            // 创建表格
            table.setWidth(1000);
            table.setTableAlignment(TableRowAlign.CENTER);
            CTTblPr tblPr = table.getCTTbl().getTblPr();
            tblPr.getTblW().setType(STTblWidth.DXA);// 表格固定宽度
            tblPr.getTblW().setW(BigInteger.valueOf(10000L));//表格总宽度
            CTTblLayoutType layoutType = table.getCTTbl().getTblPr().addNewTblLayout();
            layoutType.setType(STTblLayoutType.FIXED);//FIXED：列固定宽度 AUTOFIT：列自动宽度
            //第一行数据
            table.getRow(0).getCell(0).setText("无");
            table.getRow(0).getCell(1).setText("无");
            table.getRow(0).getCell(2).setText("3");
            table.getRow(1).getCell(0).setText("4");
            table.getRow(1).getCell(1).setText("5");
            table.getRow(1).getCell(2).setText("6");
            table.getRow(2).getCell(0).setText("7");
            table.getRow(2).getCell(1).setText("8");
            table.getRow(2).getCell(2).setText("9");
            //横向合并，第一行的0和1
            table.getRow(0).getCell(0).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            table.getRow(0).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            //导出
            FileOutputStream out = new FileOutputStream("D://student_health_report1.docx");
            doc.write(out);
        }catch (IOException  e){
            e.printStackTrace();
        }
    }

}
